case TreeLabel( Tree pat2): return pat == pat2;
case TreeLabel( Tree pat2 ): switch( pat ) { case Apply( _, _ ): switch( pat2 ) { case Apply( _, _ ): return TreeInfo.methSymbol( pat ) == TreeInfo.methSymbol( pat2 ); } } return pat == pat2;
      public boolean equals( Object o ) {            if( !(o instanceof Label ))                  return false;            Label oL = (Label) o;             //System.out.print(this + " equals " + oL);            switch( this ) {            case DefaultLabel:                  switch( oL ) {                   case DefaultLabel:                         return true;                   } //                   break;            case SimpleLabel( Literal lit ):                  switch( oL ) {                   case SimpleLabel( Literal lit2 ):                        return /*(lit.kind == lit2.kind)				 && */lit.value.equals( lit2.value );                  }                  break;            case TreeLabel( Tree pat ):                  switch( oL ) {                  case TreeLabel( Tree pat2):                        return pat == pat2;                  }                  break ;            case TypeLabel( Type tpe ):                  switch( oL ) {                  case TypeLabel( Type tpe2):                        return tpe.equals( tpe2 );                  }                  break ;            case Pair( Integer state, Label lab ):                  switch( oL ) {                  case Pair(  Integer state2, Label lab2 ):                        return  state.equals( state2 )                                  && lab.equals( lab2 ) ;                  }                  break;            }             return false;      }