001    package toolbus.environment;
002    
003    import java.util.List;
004    
005    /**
006     * The Bindings interface maintains (at least conceptually) a list of Bindings. Newer bindings
007     * appear at the begiing of the list.
008     */
009    interface Bindings{
010            
011            /**
012             * @return deep (**** qualify this !!! ****) copy of the Bindings object
013             */
014            Bindings clone();
015            
016            int size();
017            
018            /**
019             * Return the first binding of for a given key value
020             * 
021             * @param key
022             * @return its binding or null
023             */
024            Binding get(String key);
025            
026            /**
027             * Introduce a new (key, binding) pair
028             * 
029             * @param key
030             * @param binding
031             */
032            void put(String key, Binding binding);
033            
034            /**
035             * Remove the first binding for key
036             * 
037             * @param key
038             */
039            void remove(String key);
040            
041            /**
042             * Returns a copy of the content of the bindings as a list.
043             * @return A copy of the content of the bindings as a list.
044             */
045            List<Binding> getBindingsAsList();
046            
047            /**
048             * @return a string representation
049             */
050            String toString();
051    }