@Override
  public void computeAccess(
      IAccessContextId contextId, Collection<Object> objectsToCheck, AccessData accessData)
      throws OseeCoreException {
    Conditions.checkNotNull(contextId, "contextId");
    Conditions.checkNotNull(objectsToCheck, "objectsToCheck");
    Conditions.checkNotNull(accessData, "accessData");

    OseeDsl oseeDsl = dslProvider.getDsl();
    Conditions.checkNotNull(oseeDsl, "oseeDsl", "dsl provider returned null");

    Collection<AccessContext> contexts = oseeDsl.getAccessDeclarations();
    AccessContext context = interpreter.getContext(contexts, contextId);
    Conditions.checkNotNull(
        context,
        "interpreted accessContext",
        "No matching access context was found in access dsl for [%s]",
        contextId);

    for (Object objectToCheck : objectsToCheck) {
      List<AccessDetail<?>> accessDetail = new LinkedList<AccessDetail<?>>();
      AccessDetailCollector collector = new AccessDataCollector(accessDetail);
      interpreter.computeAccessDetails(collector, context, objectToCheck);
      accessData.addAll(objectToCheck, accessDetail);
    }
  }