/** * @attribute syn * @aspect GenericsSubtype * @declaredat * /Users/eric/Documents/workspaces/clara-soot/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:212 */ @SuppressWarnings({"unchecked", "cast"}) public boolean sameStructure(TypeDecl t) { Object _parameters = t; if (sameStructure_TypeDecl_values == null) sameStructure_TypeDecl_values = new java.util.HashMap(4); ASTNode$State.CircularValue _value; if (sameStructure_TypeDecl_values.containsKey(_parameters)) { Object _o = sameStructure_TypeDecl_values.get(_parameters); if (!(_o instanceof ASTNode$State.CircularValue)) { return ((Boolean) _o).booleanValue(); } else _value = (ASTNode$State.CircularValue) _o; } else { _value = new ASTNode$State.CircularValue(); sameStructure_TypeDecl_values.put(_parameters, _value); _value.value = Boolean.valueOf(true); } ASTNode$State state = state(); if (!state.IN_CIRCLE) { state.IN_CIRCLE = true; int num = state.boundariesCrossed; boolean isFinal = this.is$Final(); boolean new_sameStructure_TypeDecl_value; do { _value.visited = new Integer(state.CIRCLE_INDEX); state.CHANGE = false; new_sameStructure_TypeDecl_value = sameStructure_compute(t); if (new_sameStructure_TypeDecl_value != ((Boolean) _value.value).booleanValue()) { state.CHANGE = true; _value.value = Boolean.valueOf(new_sameStructure_TypeDecl_value); } state.CIRCLE_INDEX++; } while (state.CHANGE); if (isFinal && num == state().boundariesCrossed) { sameStructure_TypeDecl_values.put(_parameters, new_sameStructure_TypeDecl_value); } else { sameStructure_TypeDecl_values.remove(_parameters); state.RESET_CYCLE = true; sameStructure_compute(t); state.RESET_CYCLE = false; } state.IN_CIRCLE = false; return new_sameStructure_TypeDecl_value; } if (!new Integer(state.CIRCLE_INDEX).equals(_value.visited)) { _value.visited = new Integer(state.CIRCLE_INDEX); boolean new_sameStructure_TypeDecl_value = sameStructure_compute(t); if (state.RESET_CYCLE) { sameStructure_TypeDecl_values.remove(_parameters); } else if (new_sameStructure_TypeDecl_value != ((Boolean) _value.value).booleanValue()) { state.CHANGE = true; _value.value = new_sameStructure_TypeDecl_value; } return new_sameStructure_TypeDecl_value; } return ((Boolean) _value.value).booleanValue(); }