package org.monospark.spongematchers.type;

import java.util.Map;

import org.monospark.spongematchers.matcher.SpongeMatcher;
import org.monospark.spongematchers.matcher.sponge.BlockTypeMatcher;
import org.monospark.spongematchers.parser.SpongeMatcherParseException;
import org.monospark.spongematchers.parser.element.StringElement;
import org.spongepowered.api.block.BlockType;

public final class BlockTypeType extends MatcherType<BlockType> {

    private MatcherType<Map<String,Object>> type = MatcherType.definedMap()
            .addEntry("id", MatcherType.STRING)
            .addEntry("properties", MatcherType.PROPERTY_HOLDER)
            .build();
   
    BlockTypeType() {
        super("block type");
    }

    @Override
    public boolean canMatch(Object o) {
        return o instanceof BlockType;
    }

    @Override
    protected boolean canParse(StringElement element, boolean deep) {
        return type.canParseMatcher(element, deep);
    }

    @Override
    protected SpongeMatcher<BlockType> parse(StringElement element) throws SpongeMatcherParseException {
        return BlockTypeMatcher.create(type.parseMatcher(element));
    }
}

@@ -452,16 +452,29 @@
 private 
+static final 
 MatcherT
@@ -497,20 +497,20 @@
 bject%3E%3E 
-type
+TYPE
  = Match
@@ -925,20 +925,20 @@
  return 
-type
+TYPE
 .canPars
@@ -1127,20 +1127,20 @@
 .create(
-type
+TYPE
 .parseMa

Make the internal MatcherType of the BlockType MatcherType a constant