/**
  * Return whether a variable with this type declaration can be assigned a value with the specified
  * type declaration. For example: Object foo = new String(); // this is valid String foo = new
  * Object(); // this is invalid See "The Java Language Specification" 5.1.4
  *
  * @see java.lang.Class#isAssignableFrom(java.lang.Class)
  */
 boolean isAssignableFrom(MWTypeDeclaration other) {
   return this.isAssignableFrom(other.getType(), other.getDimensionality());
 }
 boolean mightBeAssignableTo(MWTypeDeclaration other) {
   return this.mightBeAssignableTo(other.getType(), other.getDimensionality());
 }
 boolean matches(MWTypeDeclaration other) {
   return (this.dimensionality == other.getDimensionality())
       && (this.getType() == other.getType());
 }