in src/main/java/org/apache/commons/ognl/OgnlContext.java [649:698]
public Object remove( Object key )
{
Object result = null;
// FIXME: complexity is O(n)
if ( RESERVED_KEYS.contains( key ) )
{
if ( CONTEXT_CONTEXT_KEY.equals( key ) || TRACE_EVALUATIONS_CONTEXT_KEY.equals( key )
|| KEEP_LAST_EVALUATION_CONTEXT_KEY.equals( key ) )
{
throw new IllegalArgumentException( "can't remove " + key + " from context" );
}
if ( THIS_CONTEXT_KEY.equals( key ) )
{
result = getCurrentObject();
setCurrentObject( null );
}
else if ( ROOT_CONTEXT_KEY.equals( key ) )
{
result = getRoot();
setRoot( null );
}
else if ( LAST_EVALUATION_CONTEXT_KEY.equals( key ) )
{
result = lastEvaluation;
setLastEvaluation( null );
}
else if ( CLASS_RESOLVER_CONTEXT_KEY.equals( key ) )
{
result = getClassResolver();
setClassResolver( null );
}
else if ( TYPE_CONVERTER_CONTEXT_KEY.equals( key ) )
{
result = getTypeConverter();
setTypeConverter( null );
}
else if ( MEMBER_ACCESS_CONTEXT_KEY.equals( key ) )
{
result = getMemberAccess();
setMemberAccess( null );
}
}
else
{
result = values.remove( key );
}
return result;
}