private void init() {
		if(!isInited){
			actions=new HashMap<String, MethodObject>();

            List<Object> containers=new LinkedList<Object>();
            containers.add(comp);

            if(comp instanceof Component){
                Component component=(Component)comp;
                while((component=component.getParent())!=null){
                    containers.add(component);
                }
            }

            for(final Object container : containers){
                ReflectionUtils.iterateOverMethods(container.getClass(),null,new ReflectionCallback<Method>() {

                    private Action action;

                    @Override
                    public boolean filter(Method entity) {
                        action = entity.getAnnotation(Action.class);
                        return action!=null;
                    }

                    @Override
                    public void consume(Method entity) {
                        for(String s : action.value()){
                            MethodObject methodObject=actions.get(s);
                            if(methodObject==null){
                                actions.put(s,new MethodObject(entity, action, container));
                                continue;
                            }

                            if(methodObject.getAction().overrideWeight() >= action.overrideWeight()){
                                continue;
                            }

                            actions.put(s,new MethodObject(entity, action, container));
                        }
                    }
                });
            }
			isInited=true;
		}
	}