This method is invoked for each resource that the analyzer is requested to analyze. Implementations add zero or more capabilities and/or requirements to the supplied lists.
Analyzers may examine the lists of already-discovered requirements and capabilities; for example they may wish to add a certain capability if (and only if) it has not already been added.
However, analyzers should not rely on being invoked in any particular order, i.e. either before or after any other analyzer.
Analyzers MUST NOT attempt to remove or replace any capability or requirement from the supplied list. Clients of this method may enforce this by passing List implementations that throw {@link UnsupportedOperationException} upon any attempt to call{@link List#remove(int)}, etc.
@param resource The current resource.
@param capabilities The list of capabilities.
@param requirements The list of requirements.
@throws Exception If something goes wrong. The error will be logged to the OSGi Log Service (if available) and the next ResourceAnalyzer (if any) will be asked to analyze the resource.