code: package org.applause.lang.scoping;
  
  import static org.eclipse.xtext.scoping.Scopes.scopedElementsFor;
  
  import org.applause.lang.applauseDsl.Entity;
  import org.applause.lang.applauseDsl.ObjectReference;
  import org.applause.lang.applauseDsl.TypeDescription;
  import org.eclipse.xtext.resource.IEObjectDescription;
  import org.eclipse.xtext.scoping.IScope;
  import org.eclipse.xtext.scoping.impl.AbstractScope;
  
  import com.google.common.collect.Iterables;
  
  public class NestedDeclarationScope extends AbstractScope {
  
  	private final ObjectReference container;
  
  	public NestedDeclarationScope(ObjectReference container) {
  		this.container = container;
  	}
  
  	public IScope getOuterScope() {
  		return IScope.NULLSCOPE;
  	}
  
  	@Override
  	protected Iterable<IEObjectDescription> internalGetContents() {
  		TypeDescription outerType = TypeUtil.getTypeOf(container.getObject());
  		if(outerType.getType() instanceof Entity) {
  			Entity entity = (Entity) outerType.getType();
  			return scopedElementsFor(entity.getProperties());
  		} else
  			return Iterables.emptyIterable();
  	}
  
  }
  