public boolean isOfSameType(Type t) {
    if (t == null)
      return true;
    if ((t.isConstant || isConstant) && !t.actualType.equals("nil") && !actualType.equals("nil")) {
      String tbaseType = t.actualType;
      String baseType = actualType;
      if (dimensions != null) {
        baseType = actualType.split("\\[")[0];
      }
      if (t.dimensions != null)
        tbaseType = t.actualType.split("\\[")[0];
      return tbaseType.equals(baseType);
    }
    return t.actualType.equals("nil") || actualType.equals("nil") || getName().equals(t.getName());
  }