case VariablePat(Tree tree): switch (q) { case VariablePat(Tree other): return (tree.symbol() != null) && (tree.symbol().kind != Kinds.NONE) && (tree.symbol().kind != Kinds.ERROR) && (tree.symbol() == other.symbol()); } return false;
    protected boolean superPat(PatternNode p, PatternNode q) {        switch (p) {            case DefaultPat():                switch (q) {                    case DefaultPat():                        return true;                    //case ConstantPat(_, _):                    //    return q.type.isSubType(p.type);                }                return false;            case ConstrPat(_):                switch (q) {                    case ConstrPat(_):                        return q.type.isSubType(p.type);                }                return false;            case SequencePat(_, int plen):                switch (q) {                    case SequencePat(_, int qlen):                        return (plen == qlen) && q.type.isSubType(p.type);                }                return false;            case ConstantPat(Object pval):                switch (q) {                    case ConstantPat(Object qval):                        return pval.equals(qval);                }                return false;        }        return false;    }