public class BeanContext {
    // Add methods:
    void add(Object bean);
    void add(String name, Object bean);
    // Update methods:
    void update();
    void update(String phase);
    // Get bean methods:
    <T> T getBean(Class<? extends T> clazz);
    <T> T getBean(Class<? extends T> clazz, boolean inherit);
    <T> T getBean(String name, Class<T> clazz);
    <T> T getBean(String name, Class<T> clazz, boolean inherit);
    // Get beans methods:
    <T> List<T> getBeans(Class<T> clazz);
    <T> List<T> getBeans(Class<T> clazz, boolean inherit);
    // Connect method:
    void connect(Object bean);
}