class Context implements IContext<TEntity> {

    @Override
    public Group<TEntity> getGroup(IMatcher matcher) {
        Group<TEntity> group = _groups.get(matcher);
        if (group == null) {
            group = new Group(matcher, entityType);
            for (TEntity entity : getEntities()) {
                group.handleEntitySilently(entity);
            }
            _groups.put(matcher, group);

            for (int index : matcher.getIndices()) {
                if (_groupsForIndex[index] == null) {
                    _groupsForIndex[index] = EntitasCollections.<Group<TEntity>>createList(Group.class);
                }
                _groupsForIndex[index].add(group);
            }
            notifyGroupCreated(group);
            return group;
        }
        return group;

    }

    public  Context(int totalComponents, int startCreationIndex, ContextInfo contexInfo,
                   EntityBaseFactory<TEntity> factoryMethod, Function<TEntity, IAERC> aercFactory);

}