Closed (outdated)
Project:
Drupal core
Version:
11.x-dev
Component:
forms system
Priority:
Normal
Category:
Bug report
Assigned:
Unassigned
Issue tags:
Reporter:
Created:
5 Apr 2016 at 19:31 UTC
Updated:
20 Nov 2024 at 23:27 UTC
Jump to comment: Most recent, Most recent file
Comments
Comment #2
zuhair_akJust added an isset test for the #type index in line 580 of core/includes/common.inc. Dont know if this is the correct way.
Comment #3
zuhair_akComment #5
zuhair_akThere was no newline at the end of patch.Fixed it.
Comment #6
msypes commentedHi,
Michael & Joe are working on this patch at the NoLa 2016 sprint
Checked by attempting a temporary hack with the Account Settings form (admin/config/people/accounts), but couldn't fully reproduce the problem with a markup element. I can confirm that commenting out the #type for the Logo Settings in the Appearance settings form ( /admin/appearance/settings) does break the expected Javascript functionality as well as generate the error in the recent logs.
The patch is straightforward and corrects the described issue.
Comment #7
msypes commentedComment #8
pfrenssenThis looks good to me. This doesn't require a test IMO. RTBC+1, thanks!
Comment #9
esod commentedWhere can I recreate the bug? /admin/config/people/accounts doesn't print the undefined index notice. There's nothing in the log. Thanks.
Comment #10
alexpottI definitely think this could use a test - it would be easy to produce a regression.
Comment #11
msypes commented@esod: To be clear, the error doesn't normally occur on the page I referenced (admin/config/people/accounts). I tried modifying that admin form by adding a #markup element whose display would depend on the checking of another form element on the page. I couldn't get such a thing to work, which would have duplicated the originally described issue/problem.
On the other hand, commenting out the #type for the Logo Settings in the Appearance settings form ( /admin/appearance/settings) does break the expected Javascript functionality as well as generate the error in the recent logs.
Comment #12
ankitasharma13 commentedI have applied the above patch and tested and its working fine.There is nothing in the error log.
Comment #13
dcam commentedThank you for the review, @ankitasharma13!
Unfortunately, this issue still needs work. @alexpott's comment in #10 and the "Needs tests" tag are intended to indicate that this patch should be expanded to include automated tests.
Comment #14
zuhair_akI am new to writing Unit tests, can someone give an example to write tests for core/includes/common.inc functions like here in drupal_process_states function? Is there examples for that in core?
Comment #16
mradcliffeThis probably needs a re-roll as well these days.
Comment #17
finn lewisI'm looking at this at the DrupalCon mentored sprints.
I'll run through https://www.drupal.org/contributor-tasks/reroll
Comment #18
finn lewisThe patch applies cleanly on 8.3.x.
Not too sure where to start with writing tests, so I'll leave this for someone else.
Comment #20
ajmantis commentedRetest to 8.4
Comment #21
sunComment #22
pk188 commentedAdding patch to retest #5.
Comment #25
alezu commentedThe patch applies well on 8.4.4. Thank you.
Comment #26
mradcliffeUpdated issue summary to state remaining tasks.
It looks like the patch needs a test before any further review can be done so I am setting this back to Needs Work.
Comment #27
himerus commentedI can confirm this works against 8.5.0 as well.
Comment #28
kanav_7 commentedRerolled in 8.6.x
Comment #29
kanav_7 commentedCorrected #28
Comment #30
savkaviktor16@gmail.com commentedComment #31
pifagor commented.
Comment #32
dcam commentedThe issue is tagged as needing tests. It cannot be RTBC until they are written.
Comment #33
pifagor commentedI apologize, I just mistakenly did not choose that status.
Comment #34
dcam commentedNo apology necessary.
Comment #35
bdlangton commentedI've updated the patch to have a KernelTest. Let me know if this looks good.
Comment #37
bdlangton commentedMessed up that patch file. Here's the correct one.
Comment #38
mradcliffeI think a simple
$this->assertArrayHasKey('#attributes', $form_element);would make sense here.Comment #39
bdlangton commentedAdded the assertion. Thanks.
Comment #40
dcam commented@bdlangton
Thank you very much for your work on this. It is appreciated. You can do one more thing that would be helpful though - provide a tests-only patch. Uploading a patch file without the fix allows reviewers to see at a glance that there is an issue and the fix resolves it. Also it allows us to confirm that the test itself is working and testing for the right thing.
Typically we would upload the tests-only patch and then the full patch to the same comment. Doing so ensures that Testbot will leave the issue status as "Needs Review" instead of marking the issue as "Needs Work" because the test-only patch failed (which is exactly what we want).
Comment #41
bdlangton commented@dcam thanks for the notes. I think this should do it.
Comment #43
dcam commentedIt's been a while since I've done a patch review, but the test looks good to me. I don't see anything wrong with it. Thank you, @bdlangton.
Comment #44
alexpottThe code in drupal_process_states() has the above comment in it. With #markup don't we have the same problem. In fact if someone uses #states on #markup I don't see how it is going to work.
See the following output from a REPL.
Comment #45
rakesh.gectcrComment #46
mrpauldriver commentedI am not a coder but found this issue because I have been working on a form_alter (using states) which has been returning a very similar error - See pastebin. The error seemed so similar to the one mentioned here that thought I would try this patch.
After applying patch 42 to Drupal 8.5.4 , my error immediately goes away, but the patch seems to undo the work being done by another core patch that I am using. See https://www.drupal.org/project/drupal/issues/2923701
As you will realise from this stackexchange post, I am very much a learner, but it may provide some background about the form_alter that I was working on.
Comment #48
duneblI confirm #41 solve the issue
Comment #49
akalata commentedRe #44, I'm seeing this happen for fields that aren't markup, but that are first-level $form elements that server as wrappers/containers for inner widgets that do have a #type.
I am adjusting states using the contrib Field States UI module, so it may be the module is applying the States API incorrectly?
Comment #50
nickdickinsonwilde@alexpott re #2700667-44: Notice: Undefined index: #type in Drupal\Core\Form\FormHelper::processStates()
Yes, that is the case. However... that problem is I would say a separate issue. Specifically, #markup ignores any #attributes array.
This is expected behaviour to me - I'm providing the markup aren't I? So, I don't think it is a bug, but if it is a bug, I think it should be dealt with in a different ticket than this.
@akalata: Easily possible I'm doing something funny there. In anycase, I am partially done a significant rewrite of that - hopefully get it out this month, although if so, it will require some core patches/may have to wait until the next Core release.
Comment #51
nickdickinsonwildeComment #52
nickdickinsonwildeAs @akalata mentioned, Field States UI was sometimes triggering this. I've investigated and it isn't doing anything wrong. What is happening, is that the Multivalue Form array has a
#themekey and not a#typekey - and in some cases the multivalue form has to have states applied to it rather than its children.It's only causing notices and only under some conditions, so not a hard blocker but not pretty.
So, given that and my other note about
#markupbeing a special case, can you give this another look @alexpott? Setting to RTBC so it shows up higher in your list ;)Comment #54
nickdickinsonwildeTestbot failure (selenium server unavailable?)
Comment #55
alexpottRe @NickWilde but this fix widens the scope of what doesn't report an error with drupal_process_states(). Atm if you use with #markup you get an warning - which is good because it's not going to work. But afterwards no warning and you might think it'll work. Where is the multivalue field coming from?
Comment #56
nickdickinsonwilde@alexpott hmm uhh. argh. Currently, behaviour is inconsistent - if you create an element with just #markup key, it will give said error (which is not *very* helpful either). However many people include
'#type' => 'markup'despite it not being required (and there are examples of that in core); in which case it would silently not work already.Do you think that #markup should have a (better) error message or be adjust to have attributes and states work?
Any multiple value form with multiple widgets; so autocomplete tag style Entity Reference widget would be fine, but another Entity Reference widget with with a cardinality > 1 would fail.
Comment #57
alexpottI think a way forward here is better documentation. We need to document that this only works on renderable things that print the #attributes property. There are many that do not. The problem is we can't know if they do or they don't when this is called by the renderer.
So maybe for now we can improve the docs here:
Since it's really a render array that supports #attributes. We probably also want to mention the #markup does not support #states.
Comment #58
nickdickinsonwildeThanks for the feedback @alexpott. New patch attached with further documentation.
Comment #59
kalyansamanta commentedSorry ! By mistake uploaded duplicate file.
Comment #60
mradcliffePlease don't post duplicate patches, @kalyansamanta.
I've confirmed that the patch in #59 is the same as in #58 by running interdiff on those (after downloading the one in #59 with a different file name).
Comment #61
heykarthikwithu@mradcliffe these duplicate patches are not done only for this tickets, I had came across couple more tickets where @kalyansamanta posting identical patches..
https://www.drupal.org/project/drupal/issues/2952488#comment-12864862
https://www.drupal.org/project/drupal/issues/2920395#comment-12863766
@alexpott you can have look into this.. Or can you please tag this user(@kalyansamanta) to appropriate guidelines.
Comment #62
alexpottI've removed issue credit for @kalyansamanta - they've contacted me and appear to be aware of their mistake.
Comment #63
alexpottThis is getting there. I think
Most elements should print #attributes so most elements do work. The markup element is the only one that is known to not work.Is a bit verbose. Perhaps something likeStates are not supported by render array where #type is markup.The problem is that there is no markup element - it is a pseudo thing provided by the renderer service.
Thinking about this some more have we considered triggering a warning if #markup or #type = 'markup' so developers can find this out without having to read docs?
The multiple blank lines. There should only be one.
Comment #64
oriol_e9gComment #66
nwoodland commentedPatch from #64 on Drupal 8.6.13 and PHP 7.2.15 works great. Thanks!
Comment #67
oriol_e9g@nwoodland RTBC?
Comment #68
mikelutzI will. I've been using #58 in production on many sites for a long time with no issues, and can confirm #64 only updates coding standards and documentation.
I don't think a warning on #type=markup is appropriate. It's currently a notice and I'm hoping to get rid of THAT. This occurs regularly in the field widget and field formatter settings forms for contrib field types. As I understood it last I investigated (and correct me if I'm wrong, it's been a while) As you show/hide that part of the form, the hidden/visible state is applied to the wrapper and all the elements of the form. The markup is properly hidden because the parent is, but the state still bubbles down. If you are applying a hidden state to a parent and subelements, and one of the sub elements happens to be markup, then the behavior is as expected. I think there are enough situations like this where hidden/visible is applied to a whole subform that might include arbitrary markup which currently works. I'm not sure how a sub form that isn't controlling it's own states would declare that it's markup state is covered by the parent and doesn't need a warning.
I'm going to RTBC based on that, but I'm happy to continue the discussion if anyone disagrees.
Comment #69
joelpittetRTBC++ fixes an issue with linked_field
Comment #70
publishing future commentedCannot apply patch in #64 to Drupal 8.7. Is there an updated version available?
Comment #71
volegerJust reroll
Comment #72
publishing future commentedThank you, patch applied properly!
Comment #73
darrenwh commentedThe logic does not need to be wrapped in brackets:
$key = isset($elements['#type']) && $elements['#type'] == 'item' ? '#wrapper_attributes' : '#attributes';Comment #74
vacho commentedCode refactor according to #73 suggestion.
Comment #75
oriol_e9gThis is a microupdate, still RTBC.
Comment #76
alexpottFrom #68
Doesn't that imply that there is a better fix out there? I.e. to not bubble the state down to markup elements - I've tried to find out how this is happening but I can't see it.
It would be really awesome if someone could post steps to reproduce this with a contrib module.
Comment #77
publishing future commentedUnfortunately patch in #74 fails again with Drupal 8.7.1. Any updates?
Comment #78
vacho commented@publishing-future I test the patch #74 at current 8.7.x version a this applies perfectly.
Comment #79
publishing future commentedThanks, I now as able to apply it manually.
Comment #84
alexpottI'm going to needs work the issue for this. It would be really if someone could provide these as I'm still concerned that we are fixing an effect rather than the cause.
Comment #85
bramdriesenI got this error when using the "media_entity_browser" module for ckeditor. When opening the entity embed widget I was presented with this error. The patch resolved the issue for me though.
Comment #86
vacho commentedComment #88
gido commentedWe used the patch for a while but figured out that this was our "fault" by trying to use
#stateson a "field" without a proper#type(was more like a parent container containing inline form).Using
containerfor the type fixed our issue.Is there any reason that
#statesstuff depend on a#typedefined ?Comment #89
SaraKlasson commentedIt seems to me that neither 2700667-74.patch nor 2700667-71.patch applies after upgrading core to 8.8.0.
Comment #90
lammensj commentedI rewrote the patch for version 8.8.
Comment #91
ami.nair commentedI rewrote the patch for version 8.8.2. As 8.8.2 removed core/tests/Drupal/KernelTests/Core/Common/DrupalProcessStatesTest.php, the previous patches does not apply.
Comment #92
ami.nair commentedComment #93
dww@ami.nair Re: #91 - thanks for your contribution.
However, DrupalProcessStatesTest.php is a new test being added in this issue.
Not true. The patch needs to add that file to core.
Also, please post an interdiff with any patch you upload based on a previous patch. This request applies to @LammensJ in #90, too.
NW for:
- A clean test-only patch uploaded here showing proper failure.
- A working test + fix patch with interdiffs from previous efforts.
- Better steps to reproduce this bug, ideally in the summary.
Thanks!
-Derek
p.s. Ping re: #2702233: [backport] Add JavaScript tests for Form API #states: required, visible, invisible, expanded, checked, unchecked Let's get that wrapped up and in! ;)
Comment #94
dwwSorry, meant to change the status, too.
Comment #95
ami.nair commented@dww, I think the previous patch in #90 works for 8.8.2. It was some glitch in my system that it was not working. Thank you for the time
Comment #96
darrenwh commentedHide obsolete patches
Comment #97
jungleMade a tiny module to reproduce the issue. Steps to reproduce added to the issue summary.
Key code:
Comment #98
junglewrong comment, removed, sorryComment #99
jungleA wrong patch, sorryComment #100
jungleComment #101
jungleAs #92 dropped two parts from #90, I'd like to continue from #90 following #93
Attached
From #90
- Better steps to reproduce this bug, ideally in the summary.
See #97
Comment #102
jungleComment #103
mradcliffeI removed the Needs issue summary update. Nice job adding the test module and steps, @jungle. The issue summary seems pretty clear to me what the next steps are.
I found a minor nit pick with a comment in the patch.
After that I think the next step would be for someone to manually test the patch following the steps to reproduce in the issue summary. I kept the Novice tag to help identify that.
The last sentence here sounds a little awkward in English. I think making "render array" plural would help - "render arrays".
Comment #104
jungleThanks, @mradcliffe for reviewing!
Changed and manually tested
Notice: Undefined index: #type in Drupal\Core\Form\FormHelper::processStates()(see screenshot before.png)Comment #105
mradcliffeI reviewed the patch based on the changes in #104. It would be nice if someone else could run through the manual-testing steps.
Comment #106
jungleRe: #105, actually, I did do manual-testing in #104, with screenshots attached. And one more manual testing is fine for me if it's necessary.
Comment #107
mradcliffeYes, sorry. Usually we try to have someone who didn't write the latest patch do either a review or manual testing. Your steps to reproduce should help with that, @jungle. Thank you.
Comment #109
tanubansal commented#97, Can someone share module.zip file compatible with Drupal 9.1
Comment #110
pratik_kambleComment #111
jungleTagging
Global2020to see if this one gets viewed.Comment #112
billywardrop commentedI'm at DrupalCon Global, I will test this
Comment #113
billywardrop commentedI modified the states test module to make it Drupal 9 compatible then I followed the steps in #104 and the patch is working as expected. I got an error in the Dblog before I applied the patch then no further errors after the patch was applied.
Comment #114
billywardrop commentedComment #115
alexpott#76 still needs to be addressed - if the render system is bubbling down #states to elements that don't support #states that is a problem. What we're doing here is masking. This is why we need concrete steps to reproduce this issue not a something that adds #states to a markup element since that is always wrong.
Comment #116
jungleOut of my ability to dig into details myself, So I would suggest landing this one first if possible. This is a real bug, at least, it got fixed. Even thorough, the way of fixing it is not the best way. Or keep waiting till someone finds out the better way. it's already 4 years old :p.
Tagging "Needs followup" for #76 and setting back to RTBC for a second chance.
Thanks!
Comment #117
alexpott@jungle I've been pushing back on this for until we have a concrete set of steps to reproduce which are not add #states to a #markup element. Doing this does not work. Fixing this removes the one indication we have that something is wrong. People have said that there is a way that the field UI makes this occur but we are still waiting for steps to reproduce this. This is the bug.
Comment #118
jungleSorry, @alexpott, thanks for your time.
Tagging "Bug Smash Initiative" and send to the slack to see if anyone else could help.
Comment #119
carolpettirossi commentedI'm reproducing this error: Notice: Undefined index: #type in Drupal\Core\Form\FormHelper::processStates() (line 208 of core/lib/Drupal/Core/Form/FormHelper.php).
when I'm altering a paragraph to add #states.
I have a mymodule_field_widget_entity_reference_paragraphs_form_alter where I update some files to show/hide depending on a previous selected value.
I'm using paragraphs experimental which collapse all the paragraph fields. This might be the issue here, but I'm not sure.
The patch #104 does fix the Notice though.
Comment #121
amneh.shawish commentedThe below patch will fix this error (Notice: Undefined index: #type in drupal_process_states())
https://www.drupal.org/files/issues/2020-03-11/2700667-104.patch
Comment #122
pranav45 commentedthanks. #104 that patch worked for me.
Comment #123
robertoperuzzoThanks jungle patch #104 works (OpenSocial 8.x-9.4, Drupal 8.8.10) .
Comment #124
NitinLama commented@alexpott Agreed.
Comment #125
efrainhI have the same as #119, but in this case it's a List (text) field in a paragraph which will make some other fields appear or hide according to the value selected:
This is a piece of the code:
I applied the patch in #104 and it fixed the problem, no more notice message.
Comment #126
alexpott@efrainh can you provide some concrete steps to reproduce the PHP notice that someone without your code base can follow? I.e. Get these contrib modules, install standard, install such and such modules and do this configuration... and then we can see why this is happened.
The fix in #104 is not fixing the root cause. It's fixing an outcome of something not working or being in the expected state.
Comment #127
belba commentedIn a hook form_views_exposed_form_alter I had the following lines of code for several fields :
The code was working fine. But in all admin pages, I got an error :
Undefined index: #type in Drupal\Core\Form\FormHelper::processStates()type in Drupal\Core\Form\FormHelper::processStates()
I can confirm, that the patch #104 solved the issue.
https://www.drupal.org/files/issues/2020-03-11/2700667-104.patch
Comment #128
alexpott@Belba this is a sign that your alter is not working as you expect to and potentially could break. Generic form alters need to test that any assumptions they are making are met. One of them needs to be whether or not using #states against an element that exists and actually has meaning. IF you are gettign this error it is because you're applying states on an element where it is not going to work.
Comment #130
ravi.khetri commentedD9 compatible patch.
Comment #131
ravi.khetri commentedComment #132
ravi.khetri commentedComment #133
dwwI'm really torn on #128:
That's true. And the DX of this is pretty harsh right now.
Could we do #104 now with a @todo to dig deeper? Punt it to a followup to explore #76?
@ravi.khetri: Thanks for your contribution, but your patches are excluding the new test file added with #104.
Here's a fresh re-roll for 9.2.x branch that includes the new test. Also a test-only version of it. And a version (b) with the @todo comment stubbed out (with an interdiff relative to version a). We only need to open the issue to get a nid for the comment if @alexpott is okay with that approach...
Thoughts?
Thanks,
-Derek
Comment #134
dwwInterdiff didn't make it before I submitted. ;)
The interdiff btwn 133a and #104 is empty, it's only patch context changes. 104 still applies with fuzz using `patch -p1`.
Comment #136
jor_kai commentedIn my case this error came from trying to add #states to the wrong place. Maybe it will help someone else with a similar issue forgo the patch if they don't really need it. The field type was Text (formatted, long).
Comment #138
vidorado commented#136 is true, our states didn't work as expected until we placed them in the correct place.
Besides that, we were still getting the PHP notice, until we applied the patch in #133
Comment #139
alexpott#138 basing an RTBC of the information in #136 is a bit odd. As #136 points out you get this error when you put #states in the wrong place. Making the change suggested by this issue makes that harder to discover NOT easier. As I've mentioned quite a few times before.
Comment #140
dieterholvoet commentedComment #142
maxstarkenburgI encountered this notice in my dblog when encountering a very unexpected bug/error in the
linkiconmodule (more details filed at #3304423: Format settings entirely disappear when clicking "Add the classes to the A tag"), namely when clicking a specific checkbox in the formatter options provided by that module, the entire list of formatter options suddenly disappears (short video of that). While there are indeed#statesrelated to the visibility of the element in question, it's of typecheckbox(and I don't believe any of the #markup elements added by that module have#statesapplied).Those factors, along with the fact that the
display:nonein this case is showing up all the way up at.field-plugin-settings-edit-form, make me wonder if this is the kind of case that @mikelutz was describing in #68 and that @alexpott has been seeking an example of? (I did also try out the patch in #133 (oh hai, Derek!) and it does indeed just quiet/prevent the notice in the dblog while not preventing thelinkiconbugginess.)Comment #144
nathan tsai commentedFollow up to #136: if the field doesn't exist, the error also pops up.
(I did not test with any patch.)
Comment #146
taote commentedIn my case this warning shows when in hook_form_alter I do something like:
The patch works, but I need to patch the core everytime I update it. Is there another way to fix this without patching the core?
Comment #147
collinhaines commentedRecreation steps with contrib module smart_trim:
The Browse available tokens link in newly generated More link section is generated based off the contrib token's
token_tree_linktheme. Because#themes do not require#typeproperties, this throws the undefined array key warning.(This is also most likely reproduceable everywhere that formatter is placed, I just ran into it here.)
Comment #148
feyp commentedI just marked #2846320: FormHelper::processStates causes notices on type-less elements. as a duplicate of this issue.
Comment #149
erwangel commentedI can confirm #147: with smart_trim module enabled, try to format a body field in views using smart_trim formatter and you get the error (D10.2.5).
The error also occurs with several other modules. I'm not using them but I landed on their issues while seeking a solution to this error message. I set some of them for reference in "relationships".
Comment #150
markie commentedCreated a MR for smart_trim to resolve this by adding a '#type' key to the build. However it seems we should make it so if '#theme' is defined, '#type' should not be required.
https://www.drupal.org/project/smart_trim/issues/3451530#comment-15625318
Comment #153
bhanu951 commentedGot hit with this issue. Applying patch from #133 fixed the issue.
Re-rolled Patch from #133 against 11.x branch.
But there seems a test failure. Might not be related to this change. Test failure in DownloadTest.php#L138
Comment #154
bhanu951 commentedSteps to Reproduce :
Added a field visibility condition using `#states` API
Among the above fields
body --> Default Body Field
field_local_video --> Media Entity Reference Field
field_article_type --> Taxonomy term field.
Comment #155
bhanu951 commentedSeems the test failure from #153 is a random error. Re-running test did not re-produce it.
Comment #156
nicolas s. commentedPatch 2700667-133.test-only.patch works for me with a drupal 10.2.7 & php 8.2.x
Comment #157
alexpottWe should be fixing the affected modules and not hiding the error - as explained quite a few times this message is the sign of something expected to work that's not going to work. "Fixing" the code in core results in less information not more and it being harder and not easier to fix.
Comment #158
markie commentedSo curious if you feel this should be closed WAD? Or the documentation should be updated to state that "#type" is required at all times even if you are using "#theme" which seems to be the main disconnect. (at least for me in smart_trim)
Comment #159
bramdriesen@markie note that it's not only for theme functions. You can also trigger this by creating a markup field (see test in the MR).
It just seems very redundant needing to specify an element like this
Over just leaving off the
#typepart. If we should be fixing that, this issue would need to update the documentation to properly specify that#typeis always required.Comment #160
alexpott@BramDriesen but that code does NOT actually work!
For the given form array
only the Blah 2 checkbox with appear if the test checkbox is checked. The markup will always be present. As I've said before the system is trying to tell you that your expectations about what will work or not is incorrect and you need to fix the form array not this code.
Comment #161
smustgrave commentedmoving to PNMI for answer to #158, if this should be rescoped to update documentation or closed as WAD.
Comment #162
seanbThis issue might already be fixed since the code has changed in #1427838: password_confirm children do not pick up #states or #attributes
Comment #163
andreastkdf commented#162: +1
It looks that it was fixed here, indeed: https://git.drupalcode.org/project/drupal/-/commit/4951a71170fa78b46ca96...
Comment #164
littlecodingIt looks like the fix for issue #1427838 has been applied to the following branches: 10.3.x, 10.4.x, 11.0.x, and 11.x.
Can we confirm the resolution of this issue on those versions?
Comment #165
scott_euser commentedYep looks fixed
Comment #166
papagrandeCross-referencing to fix.