@Override @SuppressWarnings("unchecked") public Class<T> getErasedClass() { if (_erasedClass == null && Fences.orderReads(this)._erasedClass == null) { _erasedClass = Fences.orderWrites((Class<T>) Array.newInstance(_elementType.getErasedClass(), 0).getClass()); Fences.orderAccesses(this); } return _erasedClass; }
@Override public MethodInfo getErasedMethodDefinition() { if (_erasedMethodDefinition != null) { return _erasedMethodDefinition; } if (Fences.orderReads(this)._erasedMethodDefinition != null) { return _erasedMethodDefinition; } if (_baseMethod != null) { _erasedMethodDefinition = Fences.orderWrites( reflectedOn( _baseMethod.getErasedMethodDefinition(), getReflectedType() ) ); Fences.orderAccesses(this); } return super.getErasedMethodDefinition(); }