class BeanLookupBindings extends SimpleBindings {

    private final ApplicationContext appCtx;

    public BeanLookupBindings(ApplicationContext appCtx) {
        if (appCtx == null) throw new NullPointerException("appCtx");
        this.appCtx = appCtx;
    }

    public BeanLookupBindings(ApplicationContext appCtx, Map<String, Object> m) {
        super(m);
        if (appCtx == null) throw new NullPointerException("appCtx");
        this.appCtx = appCtx;
    }
    
    @Override
    public Object get(Object key) {<FILL_FUNCTION_BODY>}

    @Override
    public boolean containsKey(Object key) {
        try {
            return super.containsKey(key) || appCtx.containsBean((String) key);
        } catch (Exception e) {
            return false;
        }
    }
}

        Object ret = super.get(key);
        if (ret == null && key instanceof String) {
            try {
                ret = appCtx.getBean((String) key);
            } catch (BeansException e) {}
        }
        return ret;
    
<methods>public void <init>() ,public void <init>(Map<java.lang.String,java.lang.Object>) ,public void clear() ,public boolean containsKey(java.lang.Object) ,public boolean containsValue(java.lang.Object) ,public Set<Entry<java.lang.String,java.lang.Object>> entrySet() ,public java.lang.Object get(java.lang.Object) ,public boolean isEmpty() ,public Set<java.lang.String> keySet() ,public java.lang.Object put(java.lang.String, java.lang.Object) ,public void putAll(Map<? extends java.lang.String,? extends java.lang.Object>) ,public java.lang.Object remove(java.lang.Object) ,public int size() ,public Collection<java.lang.Object> values() <variables>private final Map<java.lang.String,java.lang.Object> map